package br.uniceub.fsw.academicmobile.dao;

import br.uniceub.fsw.academicmobile.vo.AlunoVO;
import br.uniceub.fsw.academicmobile.vo.TurmaVO;
import java.sql.ResultSet;
import java.util.ArrayList;

/**
 * Dao responsável pelas operaçoes de banco associadas ao objeto Aluno
 * @author Christian Moryah
 */
public class AlunoDAO {

    private BD bd;
    
    public AlunoDAO(){
        bd = new BD();
    }
    
    /**
     * Retorna Objeto aluno a partir de seu ID
     * @param aluno vo com id do aluno
     * @return AlunoVO
     */
    public AlunoVO consultarAlunoPorId(AlunoVO aluno){
        String SQL = "SELECT * FROM tb_aluno WHERE ID_CD_ra = <01>";
        SQL = SQL.replaceAll("<01>", aluno.getIdCdRa().toString());
        AlunoVO retorno = new AlunoVO();
        try{
            ResultSet rs = bd.getResultSet(SQL);
            if(rs.next()){    
                retorno.setIdCdRa(rs.getLong("ID_CD_ra"));
                retorno.setNoAluno(rs.getString("No_aluno"));
            }
        }catch (Exception ex){
            System.err.println("AlunoDAO.consultarAlunoPorId:"
                                + ex.getMessage());
        }
        return retorno;
    }
    
    /**
     * Retorna aluno a partir do id de sua turma
     * @param turma vo carregando o id da turma
     * @return ArrayList lista carregando objetos do tipo aluno
     */
    public ArrayList consultarAlunoPorTurma(TurmaVO turma){
        String SQL = "SELECT tb_aluno_ID_CD_ra FROM tb_aluno_turma WHERE tb_turma_ID_turma = <01>";
        SQL = SQL.replaceAll("<01>", turma.getIdTurma().toString());
        ArrayList listaAlunos = new ArrayList();
        try{
            ResultSet rs = bd.getResultSet(SQL);
            while (rs.next()){
                String id = rs.getString("tb_aluno_ID_CD_ra");
                SQL = "SELECT * FROM tb_aluno WHERE ID_CD_ra = <01> ORDER BY NO_aluno";
                SQL = SQL.replaceAll("<01>", id);
                ResultSet rs2 = bd.getResultSet(SQL);
                while(rs2.next()){
                    AlunoVO a = new AlunoVO();
                    a.setIdCdRa(rs2.getLong("ID_CD_ra"));
                    a.setNoAluno(rs2.getString("NO_aluno"));
                    listaAlunos.add(a);
                }
            }
        } catch (Exception ex){
            System.err.println("AlunoDAO.consultarAlunoPorTurma: "+ex.getMessage());
        }
        return listaAlunos;
    }
    
}
